﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace SOM.Interfaces.Objects
{
  [GuidAttribute("1C286073-EA84-431A-8C37-BDD262204193"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
  public interface IWall
  {
    void LoadWall(int WallID);

    object GetCustomAttribute(string AttributeName, SOM.Helper.enums.ReturnType ReturnType, out int iRet);

    void SendToDatabase(string server, string table, string SchemeFilePath = "");
    void GetFromDatabase(string server, int ID, string table, string SchemeFilePath = "");

    bool Delete();
    bool Place(ref SOM.Helper.Types.Point3d Origin);

    double Length { get; set; }
    int ID { get; set; }
    SOM.Helper.Types.Point3d StartPointAxis { get; set; }
    SOM.Helper.Types.Point3d EndPointAxis { get; set; }
    SOM.Helper.Types.Point3d StartPointCenter { get; set; }
    SOM.Helper.Types.Point3d EndPointCenter { get; set; }
    double Width { get; set; }
    double Angle { get; set; }
    double A_AXIS_OFFSET { get; set; }
    double A_THERMAL_TRANSMITTANCE { get; set; }
    double[] A_LEAF_AXIS_OFFSET { get; set; }
    double[] A_LEAF_CALCULATED_HEIGHT { get; set; }
    double[] A_LEAF_HEIGHT { get; set; }
    double[] A_LEAF_OFFSET_BOTTOM { get; set; }
    double[] A_LEAF_OFFSET_TOP { get; set; }
    double[] A_LEAF_WIDTH { get; set; }
    double[] A_LEAF_Z_BOTTOM { get; set; }
    double[] A_LEAF_Z_TOP { get; set; }
    int A_ASSOC_AUTO { get; set; }
    int A_CONNECT { get; set; }
    int A_CONSTRUCTION { get; set; }
    int A_NUMBEROF_LEAVES { get; set; }
    int A_PRIORITY_END { get; set; }
    int A_PRIORITY_START { get; set; }
    int A_SEPARATION { get; set; }
    int A_SOUND_REDUCTION { get; set; }
    int[] A_LEAF_CALC { get; set; }
    int[] A_LEAF_LEVELID_BOTTOM { get; set; }
    int[] A_LEAF_LEVELID_TOP { get; set; }
    int[] A_LEAF_MATERIAL { get; set; }
    int[] A_LEAF_NUM_ENDING_END { get; set; }
    int[] A_LEAF_OFFSET_BOTTOM_LOCK { get; set; }
    int[] A_LEAF_OFFSET_TOP_LOCK { get; set; }
    int[] A_LEAF_PRIORITY { get; set; }
    int[] A_LEAF_PRIORITY_end { get; set; }
    int[] A_LEAF_PRIORITY_start { get; set; }
    int[] A_LEAF_USE_ID { get; set; }
    string A_CATEGORY { get; set; }
    string A_ELEMENTCODE { get; set; }
    string A_ELEMENTDESC { get; set; }
    string A_FIRECLASS { get; set; }
    string A_PROTOTYPE { get; set; }
    string A_USE { get; set; }
    string[] A_LEAF_CATEGORY { get; set; }
    string[] A_LEAF_DESCRIPTION { get; set; }
    string[] A_LEAF_ELEMENTCODE { get; set; }
    string[] A_LEAF_MAT_DESCRIPTION { get; set; }
    string[] A_LEAF_USE { get; set; }
    double[] A_LEAF_OFFSET { get; set; }
  }
}
